
#pragma once

#include <WinDef.h>

struct ID3D11Device;
struct ID3D11DeviceContext;

class Bindable
{
public:
	// Management.
	//-----------------------------------------------
	virtual BOOL IsBinded() CONST = 0;

	virtual BOOL Bind() = 0;
	virtual VOID Unbind() = 0;

	ID3D11Device* GetDevice() CONST;
	VOID SetDevice(ID3D11Device* device);

	ID3D11DeviceContext* GetContext() CONST;
	VOID SetContext(ID3D11DeviceContext* context);

protected:
	Bindable();
	virtual ~Bindable();

private:
	// Attributes.
	//-----------------------------------------------
	ID3D11Device*		 m_device;
	ID3D11DeviceContext* m_context;
};

